#ifndef __CX_CORE_SYMBIAN_H__
#define __CX_CORE_SYMBIAN_H__

#include "cx_lib.h"

struct IModuleManager;
struct IModule;
//
// Symbian OS helper for CXLIB
//
class CxSymbianCore
{
public:
    //
    // Get the singleton instance of CxSymbianCore
    //
    static CxSymbianCore*Instance();
    
    //
    // Initialize.
    //
    int Initialize();

    //
    // Shutdown.
    //
    void Shutdown();

	//set module mgr
	void SetModuleMgr(IModuleManager *pModuleMgr);

	// Register module
	void RegisterModule(IModule* pModule);

	//Unregister module
	void UnRegisterModule(int moduleid);

	// get module
	IModule* GetModule(int moduleid);
		
	//send message
	int  SendMessageToModule(int message, unsigned int wParam, unsigned int lParam,int toModlueid,int fromModuleid);

	//send message
	int  PostMessageToModule(int message, unsigned int wParam, unsigned int lParam,int toModlueid,int fromModuleid);
    
private:
    CxSymbianCore();

private:
	IModuleManager* pModuleMgr_;
};

#endif	/* __CX_CORE_SYMBIAN_H__ */

